/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pas.controlador;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import pas.beans.Pas_Correo;
import pas.beans.Pas_Empleado;
import pas.beans.Pas_Persona;
import pas.beans.Pas_Telefono;

/**
 *
 * @author Julio
 */
public class ServletEmpleado extends HttpServlet {

    
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        
        HttpSession session = request.getSession();       
        
        String accion =request.getParameter("accion");
        
        try {
            
            if(accion.equals("I")){
                
               String per_dni =request.getParameter("per_dni");               
               
               String per_nombre = request.getParameter("per_nombre");               
               String per_apeMat = request.getParameter("per_apematerno");
               String per_apePat = request.getParameter("per_apepaterno");
               String direccion = request.getParameter("per_direccion");
               
               Integer car_idcargo = Integer.parseInt(request.getParameter("car_idcargo"));              
               
               
               Pas_Persona bus_per = new Pas_Persona().listarPersona_One(per_dni);
               if(bus_per.getIdPersona()==0){
                  //INSERTAR NUEVA PERSONA
                  Pas_Persona new_per = new Pas_Persona();
                  new_per.setIdPersona(0);
                  new_per.setNombre(per_nombre);
                  new_per.setNumeroDoc(per_dni);
                  new_per.setApePaterno(per_apePat);
                  new_per.setApeMaterno(per_apeMat);
                  new_per.setDireccion(direccion);
                  new_per.setFk_idtipodocumento(1);
                  new_per.setAccion("I");
                  Integer ope_new_per = 0;
                  ope_new_per=new_per.operaciones(new_per);
                  
                  if(session.getAttribute("sesCorreo") != null){
                    List<Pas_Correo> listCorr = (List<Pas_Correo>) session.getAttribute("sesCorreo");
                    for (int i = 0; i < listCorr.size(); i++){
                        Pas_Correo correo = listCorr.get(i);
                        correo.setAccion("I");
                        correo.setFk_id_persona(ope_new_per);
                        Integer ope_correo = correo.operaciones(correo);
                        if(ope_correo==0){/*ERROR*/ }
                    }                   
                  }
                  if(session.getAttribute("sesTelefono") != null){
                    List<Pas_Telefono> listTel = (List<Pas_Telefono>) session.getAttribute("sesTelefono");
                    for (int i = 0; i < listTel.size(); i++){
                        Pas_Telefono telefono = listTel.get(i);
                        telefono.setAccion("I");
                        telefono.setFk_id_persona(ope_new_per);
                        Integer ope_tel = telefono.operaciones(telefono);
                        if(ope_tel==0){/*ERROR*/ }
                    }                   
                  }
                  
                  Pas_Empleado new_Empleado = new Pas_Empleado();
                  new_Empleado.setIdempleado(0);
                  new_Empleado.setFk_idcargo(car_idcargo);
                  new_Empleado.setAccion("I");
                  new_Empleado.setFk_idpersona(ope_new_per);
                  
                  Integer ope_new_emp=new_Empleado.operaciones(new_Empleado);
                  if(ope_new_emp!=0){
                      response.sendRedirect("");                      
                  }
                  
                  
               }
               if(bus_per.getIdPersona()!=0){
                   
                  Pas_Empleado existe_empleado = new Pas_Empleado().listarEmpleado_One(bus_per.getIdPersona());
                  if(existe_empleado.getIdempleado()==0){
                      
                      if(session.getAttribute("sesCorreo") != null){
                        List<Pas_Correo> listCorr = (List<Pas_Correo>) session.getAttribute("sesCorreo");
                        for (int i = 0; i < listCorr.size(); i++){
                            Pas_Correo correo = listCorr.get(i);
                            correo.setAccion("I");
                            correo.setFk_id_persona(bus_per.getIdPersona());
                            Integer ope_correo = correo.operaciones(correo);
                            if(ope_correo==0){/*ERROR*/ }
                        }                   
                      }
                      if(session.getAttribute("sesTelefono") != null){
                        List<Pas_Telefono> listTel = (List<Pas_Telefono>) session.getAttribute("sesTelefono");
                        for (int i = 0; i < listTel.size(); i++){
                            Pas_Telefono telefono = listTel.get(i);
                            telefono.setAccion("I");
                            telefono.setFk_id_persona(bus_per.getIdPersona());
                            Integer ope_tel = telefono.operaciones(telefono);
                            if(ope_tel==0){/*ERROR*/ }
                        }                   
                      }
                      
                      //INSERTAR NUEVA EMPLEADO
                      
                      Pas_Empleado new_Empleado = new Pas_Empleado();
                      new_Empleado.setIdempleado(0);
                      new_Empleado.setFk_idcargo(car_idcargo);
                      new_Empleado.setFk_idpersona(bus_per.getIdPersona()); 
                      new_Empleado.setAccion("I");
                      Integer ope_new_empl=new_Empleado.operaciones(new_Empleado);
                      if(ope_new_empl!=0){
                          response.sendRedirect("");
                      }
                  }
                  if(existe_empleado.getIdempleado()!=0){
                      //EMPLEADO YA EXISTE
                      response.sendRedirect("");
                  }
                  
               }
               
               
            }
            
            if(accion.equals("Correo")){
                List<Pas_Correo> listCorreo;
                if(session.getAttribute("sesCorreo") != null){
                    listCorreo = (List<Pas_Correo>) session.getAttribute("sesCorreo");
                }else{
                    listCorreo  = new ArrayList<Pas_Correo>();
                }
                String id = request.getParameter("id");
                if(id != null){
                    listCorreo.remove(Integer.parseInt(id));
                } else{
                    Pas_Correo correo = new Pas_Correo();
                    correo.setCorreo(request.getParameter("cor_correo"));                    
                    listCorreo.add(correo);
                }
                session.setAttribute("sesCorreo", listCorreo);
                
                out.printf("<table class='table table-bordered'>");
                out.printf("<tbody>");
                out.printf("</tbody>");
                out.printf("<tr>");
                out.printf("<th style='width:40px;text-align:center;'>N°</th>");
                out.printf("<th>Correo</th>");
                out.printf("<th style='width:100px;text-align:center;'>Acción</th>");
                out.printf("</tr>");
                Pas_Correo corr;
                for (int i = 0; i < listCorreo.size(); i++){
                    corr = listCorreo.get(i);
                out.printf("<tr>");
                out.printf("<th style='width:40px;text-align:center;'>" + (i+1) +"</th>");
                out.printf("<th>"+ corr.getCorreo()+"</th>");
                out.printf("<th style='text-align:center;'>");
                out.printf("<button type='button' class='btn btn-info btn-sm' onclick='eliminarCorreo(" + i + ")'>Quitar</button>");
                out.printf("</th>");
                out.printf("</tr>");
                }
                out.printf("</tbody>");   
                
                out.printf("</table>");               
                
            }
            
            if(accion.equals("Telefono")){
                
                   List<Pas_Telefono> listTelefono;
                if(session.getAttribute("sesTelefono") != null){
                    listTelefono = (List<Pas_Telefono>) session.getAttribute("sesTelefono");
                }else{
                    listTelefono  = new ArrayList<Pas_Telefono>();
                }
                String id = request.getParameter("id");
                if(id != null){
                    listTelefono.remove(Integer.parseInt(id));
                } else{
                    Pas_Telefono telefono = new Pas_Telefono();
                    telefono.setNumero(request.getParameter("id_telefono"));                    
                    listTelefono.add(telefono);
                }
                session.setAttribute("sesTelefono", listTelefono);
                
                out.printf("<table class='table table-bordered'>");
                out.printf("<tbody>");
                out.printf("</tbody>");
                out.printf("<tr>");
                out.printf("<th style='width:40px;text-align:center;'>N°</th>");
                out.printf("<th>Teléfono</th>");
                out.printf("<th style='width:100px;text-align:center;'>Acción</th>");
                out.printf("</tr>");
                Pas_Telefono tel;
                for (int i = 0; i < listTelefono.size(); i++){
                    tel = listTelefono.get(i);
                out.printf("<tr>");
                out.printf("<th style='width:40px;text-align:center;'>" + (i+1) +"</th>");
                out.printf("<th>"+ tel.getNumero()+"</th>");
                out.printf("<th style='text-align:center;'>");
                out.printf("<button type='button' class='btn btn-info btn-sm' onclick='eliminarTelefono(" + i + ")'>Quitar</button>");
                out.printf("</th>");
                out.printf("</tr>");
                }
                out.printf("</tbody>");   
                
                out.printf("</table>");  
                
            }
           
             
        } finally {            
            out.close();
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
